Add some tests for GtkWindow
authorMatthias Clasen <mclasen@redhat.com>
Sat, 27 Apr 2013 17:34:18 +0000 (13:34 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 27 Apr 2013 17:41:17 +0000 (13:41 -0400)
These tests may have some assumptions on reasonable window manager
behaviour.  For now, we just test that the default size of the
window ends up as the allocated size of the content. This test
currently fails with client-side decorations, because we are
not properly discriminating between overall window size and
content size.

gtk/tests/Makefile.am
gtk/tests/window.c [new file with mode: 0644]

index 0bbd4f5197e38be7811c737e1ffa6dc41d0cb0b7..7bcd7c32bde0dcb1acf97392cd77696e74e6016d 100644 (file)
@@ -176,6 +176,10 @@ TEST_PROGS                 += objects-finalize
 objects_finalize_SOURCES         = objects-finalize.c
 objects_finalize_LDADD          = $(progs_ldadd)
 
+TEST_PROGS                     += window
+window_SOURCES                  = window.c
+window_LDADD                    = $(progs_ldadd)
+
 EXTRA_DIST +=                          \
        file-chooser-test-dir/empty     \
        file-chooser-test-dir/text.txt
diff --git a/gtk/tests/window.c b/gtk/tests/window.c
new file mode 100644 (file)
index 0000000..1aecdfc
--- /dev/null
@@ -0,0 +1,50 @@
+#include <gtk/gtk.h>
+
+static gboolean
+stop_main (gpointer data)
+{
+  gtk_main_quit ();
+
+  return G_SOURCE_REMOVE;
+}
+
+static void
+test_default_size (void)
+{
+  GtkWidget *window;
+  GtkWidget *box;
+  gint w, h;
+
+  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+  box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+  gtk_container_add (GTK_CONTAINER (window), box);
+
+  gtk_window_get_default_size (GTK_WINDOW (window), &w, &h);
+  g_assert (w == -1 && h == -1);
+
+  gtk_window_set_default_size (GTK_WINDOW (window), 300, 300);
+
+  gtk_window_get_default_size (GTK_WINDOW (window), &w, &h);
+  g_assert (w == 300 && h == 300);
+
+  gtk_widget_show_all (window);
+
+  g_timeout_add (1000, stop_main, NULL);
+  gtk_main ();
+
+  g_assert (gtk_widget_get_allocated_width (window) == 300);
+  g_assert (gtk_widget_get_allocated_height (window) == 300);
+
+  g_assert (gtk_widget_get_allocated_width (box) == 300);
+  g_assert (gtk_widget_get_allocated_height (box) == 300);
+}
+
+int
+main (int argc, char *argv[])
+{
+  gtk_test_init (&argc, &argv);
+
+  g_test_add_func ("/window/default-size", test_default_size);
+
+  return g_test_run ();
+}